vytvareni framu, nebo formu procedurou

Otázka od: delphi@mjsoft.cz

2. 9. 2004 13:20

Zdravim,

 lze udelat univerzalni proceduru, ktera me bude vytvaret frame, nebo
form dle predaneho parametru? Nevim si rady s parametrem XXX viz. dole.

nyni to mam takto:

begin
  if ....
     MujFrame1 := TMujFrame1.Create(self);

  if ....
     MujFrame2 := TMujFrame2.Create(self);
end;



moje predstava je:

procedure CreateFrame(Frame:TFrame,XXX);
begin
  Frame := XXX.Create(self);
end;

begin
  if ....
     CreateFrame(MujFrame1,XXX);

  if ....
     CreateFrame(MujFrame2,XXX);
end;


Diky predem Karel


Odpovedá: Daniel Frantik

2. 9. 2004 13:55

Ahoj,
  kazdou takto vytvarenou frame musis mit registrovanou (v
initialization unity dej RegisterClass(XXX) )

Potom:
function CreateComponentByClassName(const aClassName:string;
aOwner:TComponent):TComponent;
var
  Cls:TClass;
begin
  Cls:=GetClass(aClassName);
  if Assigned(Cls) then
    Result:=TComponentClass(Cls).Create(aOwner)
  else
    raise Exception.CreateFmt('Class "%s" not foud in project.);
end;
> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz] On Behalf Of delphi@mjsoft.cz
> lze udelat univerzalni proceduru, ktera me bude vytvaret frame, nebo
> form dle predaneho parametru? Nevim si rady s parametrem XXX
> procedure CreateFrame(Frame:TFrame,XXX);
> begin
> Frame := XXX.Create(self);
> end;


Odpovedá: Pavel Benacek

2. 9. 2004 13:48

On Thu, 2 Sep 2004 14:20:23 +0200, <delphi@mjsoft.cz> wrote:

> Zdravim,
>
> lze udelat univerzalni proceduru, ktera me bude vytvaret frame, nebo
> form dle predaneho parametru? Nevim si rady s parametrem XXX viz. dole.
>
> nyni to mam takto:
>
> begin
> if ....
> MujFrame1 := TMujFrame1.Create(self);
>
> if ....
> MujFrame2 := TMujFrame2.Create(self);
> end;
>
>
>
> moje predstava je:
>
> procedure CreateFrame(Frame:TFrame,XXX);
> begin
> Frame := XXX.Create(self);
> end;
>
> begin
> if ....
> CreateFrame(MujFrame1,XXX);
>
> if ....
> CreateFrame(MujFrame2,XXX);
> end;
>
>
> Diky predem Karel
>

Ahoj, ja bych to delal asi nasledovne, tedy pokud jsem to spravne pochopil:

type
   TFrameClass = class of TFrame;

function CreateFrame(const FrameClassname: ShortString): TFrame;
var
   FrameClass: TFrameClass;
begin
   FrameClass := TFrameClass(FindClass(FrameClassname));
   Result := FrameClass.Create(nil);
end;